import { ref } from 'vue'
import {defineStore} from "pinia";

export const useLoginStore = defineStore('useLoginStore', () => {
    // 保存token
    function addAccessTokne(token: any){
        localStorage.setItem('accessToken', token)
    }
    // 删除token
    function delAccessToken(){
        // 清空token
        localStorage.removeItem('accessToken')
        // 清空用户信息
        localStorage.removeItem('userInfo')
        // 清空页签
        localStorage.removeItem('tags')
    }
    // 获取token
    function getAccessToken(){
        return localStorage.getItem('accessToken')
    }
    // 保存用户信息
    function addUserInfo(info: any){
        localStorage.setItem('userInfo', JSON.stringify(info))
    }
    // 获取用户信息
    function getUserInfo(){
        return JSON.parse(localStorage.getItem('userInfo'))
    }
    return {addAccessTokne, delAccessToken, getAccessToken, addUserInfo, getUserInfo}
})

// 设置菜单栏变化
export const userState = defineStore('userState', () => {
    // 设置伸缩菜单
    const siderType = ref(true)
    // 伸缩菜单控制
    function changeSiderType(){
        siderType.value = !siderType.value
    }

    return {siderType, changeSiderType}
})

// 页签导航栏
export const useTagsStore = defineStore('tags', () => {
    /**
     * 注意点：localStorage存储页签数据是为了解决页面刷新页签数据丢失问题
     */
    // 初始页签数据
    var tagList = [{ path: '/',name: '首页'}]
    // 获取页签
    function getTagList(){
        if(!localStorage.getItem('tags')){
            localStorage.setItem('tags', JSON.stringify(tagList))
            return tagList
        }
        return JSON.parse(localStorage.getItem('tags'))
    }
    // 添加页签
    function addTages(item: any){
        tagList = JSON.parse(localStorage.getItem('tags'))
        tagList.push(item)
        localStorage.setItem('tags', JSON.stringify(tagList))
    }
    // 删除页签
    function delTags(item: any){
        tagList = JSON.parse(localStorage.getItem('tags'))
        const index = tagList.findIndex(v => v.path === item.path)
        tagList.splice(index, 1)
        localStorage.setItem('tags', JSON.stringify(tagList))
    }
    return { tagList, getTagList, addTages, delTags }
})
